/*! \file SimpleApp.h
 *	\brief <write description for SimpleApp.h>
 *
 *	created:	2009/11/10
 *	created:	10:11:2009   16:55
 *	filename: 	c:\src\main\libs\app\SimpleApp.h
 *	file path:	c:\src\main\libs\app
 *	file base:	SimpleApp
 *	file ext:	h
 *	author:		Vitalii Trubchaninov
 *				venngraydog@gmail.com
 */

#ifndef _APP_SIMPLEAPP_H_
#define _APP_SIMPLEAPP_H_

#pragma once

#include "BaseApp.h"

#include <core/defs.h>
#include <core/SmartPtr.h>

namespace tt{
namespace app{

class Window;

class SimpleApp : public BaseApp
{
	TT_DECLARE_SELF_AND_BASE(SimpleApp, BaseApp);

public:
	SimpleApp();
	virtual ~SimpleApp(void);

	const SharedPtr<Window>& GetWindow() const;

protected:
	virtual void onCreate();
	virtual void onRun();
	virtual void onUpdate();
	virtual void onDestroy();

protected:
	void SetWindow( const SharedPtr<Window>& window );

private:
	void createWindow();

private:
	SharedPtr<Window> m_Window;
};

} //namespace app
} //namespace tt

#endif //_APP_SIMPLEAPP_H_
